var QueryForm;
var QueryWindows;
var RequisitionRecord;
var RequisitionStore;
var RequisitionGrid;
var UpdateRequisitionWindow;
/*
 * 查询窗口
 */
var BuildQueryWindows = function() {
	QueryWindows = new Ext.Window({
				title : '~ 查询窗口 ~',
				width : 500,
				heigth : 400,
				resizable : false,
				modal : true,
				// closeAction:'hide',
				closable : false,
				items : [QueryForm],
				buttons : [{
							iconCls : 'query',
							text : '查 询',
							handler : Query
						}, {
							iconCls : 'empty',
							text : '清 空',
							handler : function() {
								QueryForm.getForm().reset();
							}
						}],
				buttonAlign : 'center'
			})
}

/*
 * 建立查询表单的界面布局
 */
var BuildQueryForm = function() {
	QueryForm = new Ext.form.FormPanel({
				// title:'----- 请选择查询条件 -----',
				labelAlign : 'right',
				labelWidth : 70,
				width : '100%',
				bodyStyle : 'padding:20px 10px;',
				items : [{
							layout : 'column',
							border : false,
							items : [{
										bodyStyle : 'padding-top:5px',
										columnWidth : .5,
										layout : 'form',
										defaults : {
											width : 130
										},
										defaultType : 'textfield',
										items : [{
													xtype : 'hidden',
													name : 'id'
												}, {
													fieldLabel : '申请人',
													id : 'proposer',
													name : 'proposer'
												}, {
													fieldLabel : '设备名称',
													id : 'deviceName',
													name : 'deviceName'
												}, {
													fieldLabel : '生产单位',
													id : 'produceUnit',
													name : 'produceUnit'
												}]
									}, {
										bodyStyle : 'padding-top:5px',
										columnWidth : .5,
										style : 'margin-left: 15px;',
										layout : 'form',
										defaults : {
											width : 130
										},
										defaultType : 'textfield',
										items : [{
													xtype : "combo",
													fieldLabel : '请购部门',
													id : 'department',
													name : 'department',
													store : comboStore,
													triggerAction : 'all',
													displayField : 'name',
													valueField : 'name',
													mode : 'local',
													emptyText : '请选择部门',
													readOnly : true
												}, {
													xtype : 'datefield',
													fieldLabel : '申请日期从',
													id : 'time1',
													name : 'time1',
													format : 'Y-m-d'
												}, {
													xtype : 'datefield',
													fieldLabel : '申请日期到',
													id : 'time2',
													name : 'time2',
													format : 'Y-m-d'
												}]
									}]
						}]
			})
}

var comboStore = new Ext.data.JsonStore({
			autoDestroy : true,
			url : '/FAM/DictInfoServlet', // 路径是相对于调用此文件的HTML所在的页面开始
			root : 'department',
			fields : ['name']
		});
comboStore.load();

/*
 * 通过查询条件连接数据库得到数据
 * 
 */
var Query = function() {
	RequisitionStore.baseParams['start'] = '0';
	RequisitionStore.baseParams['limit'] = '15';
	RequisitionStore.baseParams['proposer'] = QueryForm.form
			.findField('proposer').getValue();
	RequisitionStore.baseParams['deviceName'] = QueryForm.form
			.findField('deviceName').getValue();
	RequisitionStore.baseParams['produceUnit'] = QueryForm.form
			.findField('produceUnit').getValue();
	RequisitionStore.baseParams['department'] = QueryForm.form
			.findField('department').getValue();
	RequisitionStore.baseParams['time1'] = QueryForm.form.findField('time1')
			.getRawValue();
	RequisitionStore.baseParams['time2'] = QueryForm.form.findField('time2')
			.getRawValue();
	QueryWindows.hide();
	RequisitionGrid.getStore().reload();
}

var BulidLayout = function() {
	/*
	 * 存放资产信息的GridPanel布局
	 */

	var RequisitionColumnModel = new Ext.grid.ColumnModel([
			new Ext.grid.RowNumberer(), {
				header : 'ID',
				dataIndex : 'id',
				hidden : true
			}, {
				header : '申请部门',
				dataIndex : 'department'
			}, {
				header : '申请人',
				dataIndex : 'proposer'
			}, {
				header : '申请日期',
				type : 'date',
				dataIndex : 'time'
			}, {
				header : '设备名称',
				dataIndex : 'deviceName'
			}, {
				header : '规格型号',
				dataIndex : 'model'
			}, {
				header : '生产单位',
				dataIndex : 'produceUnit'
			}, {
				header : '申请数量',
				dataIndex : 'quantity'
			}, {
				header : '审批意见',
				dataIndex : 'approveOpinion'
			}, {
				header : '备注情况',
				dataIndex : 'remark'
			}]);

	RequisitionStore = new Ext.data.JsonStore({
				autoDestroy : true,
				url : '/FAM/SearchGZSQ',
				totalProperty : 'totalCount',
				root : 'result',
				fields : ['id', 'department', 'proposer', 'time', 'deviceName',
						'model', 'produceUnit', 'quantity', 'money', 'reason',
						'purchaseCondition', 'personCondition',
						'economyBenefit', 'useRate', 'nowStatus', 'remark',
						'approveOpinion', 'approveRemark']
			});

	RequisitionGrid = new Ext.grid.GridPanel({
				width : '100%',
				height : 450,
				store : RequisitionStore,
				cm : RequisitionColumnModel,
				stripeRows : true,
				loadMask : true,
				viewConfig : {
					forceFit : true
				},
				plugins : new Ext.ux.PanelResizer({
							minHeight : 100
						}),
				tbar : ['修改购置申请表的信息(提示：双击表格中的某行可以修改该行的信息 )', '->', {
							iconCls : 'query',
							text : ' 查 询 ',
							width : 90,
							handler : function() {
								QueryWindows.show();
							}
						}],
				bbar : new Ext.PagingToolbar({
							pageSize : 15,
							store : RequisitionStore,
							displayInfo : true,
							plugins : new Ext.ux.ProgressBarPager()
						})
			})

	RequisitionGrid.addListener('rowdblclick', function(RequisitionGrid,
			rowIndex, event) // 监听GridPanel中某行双击查看详细信息事件
			{
				var record = RequisitionGrid.getStore().getAt(rowIndex);
				UpdateRequisitionWindow.show();
				UpdateRequisitionForm.getForm().loadRecord(record);
			})

	/*
	 * 显示资产详细信息的FormPanel -- UpdateRequisitionWindows的子元素
	 */

	var UpdateRequisitionForm = new Ext.form.FormPanel({
				frame : true,
				labelAlign : 'right',
				labelWidht : 60,
				items : [{
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '购置申请表信息',
										autoHeight : true,
										defaults : {
											width : 150,
											xtype : 'textfield',
											allowBlank : false
										},
										items : [{
													xtype : 'hidden',
													name : 'id'
												}, {
													fieldLabel : '申请人',
													name : 'proposer',
													readOnly : true
												}, {
													fieldLabel : '设备名称',
													name : 'deviceName',
													readOnly : true
												}, {
													fieldLabel : '规格型号',
													name : 'model',
													readOnly : true
												}, {
													fieldLabel : '生产单位',
													name : 'produceUnit',
													readOnly : true
												}, {
													fieldLabel : '请购部门',
													name : 'department',
													readOnly : true
												}, {
													fieldLabel : '人员条件是否落实',
													name : 'personCondition',
													readOnly : true
												}, {
													xtype : 'hidden',
													name : 'hidden'
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '购置申请表信息',
										autoHeight : true,
										style : 'margin-left: 30px;',
										defaults : {
											width : 150,
											xtype : 'textfield',
											allowBlank : false
										},
										items : [{
													fieldLabel : '申请日期',
													name : 'time',
													readOnly : true
												}, {
													allowNegative : false,
													allowDecimals : false,
													fieldLabel : '申请数量',
													name : 'quantity'
												}, {
													allowNegative : false,
													fieldLabel : '所需资金',
													name : 'money',
													readOnly : true
												}, {
													decimalPrecision : 4,
													fieldLabel : '设备使用率',
													name : 'useRate',
													readOnly : true
												}, {
													decimalPrecision : 4,
													fieldLabel : '预算经济效益',
													name : 'economyBenefit',
													readOnly : true
												}, {
													xtype : 'hidden',
													name : 'hidden'
												}]
									}]
						}, {
							xtype : 'fieldset',
							title : '购置申请表信息',
							defaults : {
								xtype : 'textarea',
								width : 450,
								height : 25,
								allowBlank : false
							},
							items : [{
										fieldLabel : '请购理由及用途',
										name : 'reason',
										readOnly : true
									}, {
										fieldLabel : '购置设备条件',
										name : 'purchaseCondition',
										readOnly : true
									}, {
										fieldLabel : '原有设备情况',
										name : 'nowStatus',
										readOnly : true
									}, {
										fieldLabel : '审批意见',
										name : 'approveOpinion',
										xtype : 'combo',
										store : new Ext.data.SimpleStore({
													fields : ['text'],
													data : [['同意'], ['不同意']]
												}),
										emptyText : '请选择',
										mode : 'local',
										triggerAction : 'all',
										valueField : 'text',
										displayField : 'text',
										readOnly : true
									}, {
										fieldLabel : '备注',
										name : 'remark',
										xtype : 'combo',
										store : new Ext.data.SimpleStore({
													fields : ['text'],
													data : [['待审批'], ['已审批']]
												}),
										emptyText : '请选择',
										mode : 'local',
										triggerAction : 'all',
										valueField : 'text',
										displayField : 'text',
										readOnly : true,
										allowBlank : true
									}, {
										xtype : 'hidden',
										name : 'hidden'
									}]
						}]
			})

	/*
	 * windows -- 双击表格中某行时弹出资产详细信息的窗口
	 */
	UpdateRequisitionWindow = new Ext.Window({
				title : '修改购置申请表信息',
				width : 650,
				height : 430,
				resizable : false,
				modal : true,
				closeAction : 'hide',
				items : [UpdateRequisitionForm],
				buttons : [{
							iconCls : 'update',
							text : '修改',
							handler : function() {
								UpdateRequisitionForm.getForm().submit({
											url : '/FAM/gzspServlet',
											success : function(f, action) {
												if (action.result.success) {
													insertUserLog(1);
												}
											},
											failure : function() {
												insertUserLog(0);
											}
										});
							}
						}, {
							iconCls : 'back',
							text : '返 回',
							handler : function() {
								UpdateRequisitionWindow.hide();
							}
						}]
			})

	/*
	 * 用Viewport布局查看资产信息的界面,分北部和中央分区 北部放查询的formPanel面板 中央放资产信息的GridPanel面板
	 */
	new Ext.Viewport({
				rendTo : Ext.getBody(),
				layout : 'border',
				title : '资产购置申请表信息概况',
				items : [{
							region : 'center',
							layout : 'fit',
							items : [RequisitionGrid]
						}]
			})
}

/*
 * 资产信息成功添加 参数 1 -- 添加成功 2 -- 添加失败 记录用户日志
 */
var insertUserLog = function(flag) {
	if (flag == 1) {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 1,
						type : "购置审批",
						obj : "审批"
					}
				});
		UpdateRequisitionWindow.hide();
		RequisitionGrid.getStore().reload();

	} else {
		Ext.Ajax.request({
					url : '/FAM/insertLog',
					success : Ext.emptyFn(),
					failure : Ext.emptyFn(),
					params : {
						data : 0,
						type : "购置审批",
						obj : "购置审批"
					}
				});
	}
}

var init = function() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';
	BuildQueryForm();
	BuildQueryWindows();
	BulidLayout();
	QueryWindows.show();
}

Ext.onReady(init)